#!/bin/bash

# 改进的 Docker CE 安装脚本
set -e  # 遇到错误时退出

echo "开始安装 Docker CE..."

# 1. 系统更新
echo "更新系统包..."
sudo yum update -y

# 2. 检测发行版并安装 Docker
if grep -q "Alibaba" /proc/version; then
  echo "检测到阿里云 Linux，使用官方仓库安装..."
  
  # 安装必要的依赖
  sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  
  # 添加 Docker CE 仓库
  sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  
  # 安装 Docker CE
  sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
else
  echo "使用国内镜像源安装 Docker..."
  
  # 方法1：尝试阿里云镜像的安装脚本
  if curl -fsSL https://get.docker.com -o get-docker.sh; then
    sudo sh get-docker.sh --mirror Aliyun
    rm -f get-docker.sh
  else
    echo "官方脚本下载失败，尝试手动安装..."
    
    # 方法2：手动安装（适用于 CentOS/RHEL）
    sudo yum install -y yum-utils
    sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    # 如果阿里云源也失败，尝试清华源
    if ! sudo yum makecache; then
      echo "尝试清华大学镜像源..."
      sudo rm -f /etc/yum.repos.d/docker-ce.repo
      sudo yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
      sudo yum makecache
    fi
    
    sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  fi
fi

# 3. 用户组配置（处理组已存在的情况）
echo "配置 Docker 用户组..."
if ! getent group docker > /dev/null 2>&1; then
  sudo groupadd docker
  echo "创建 docker 用户组"
else
  echo "docker 用户组已存在"
fi

# 将当前用户加入 docker 组
sudo usermod -aG docker "$(whoami)"
echo "已将用户 $(whoami) 加入 docker 组"

# 4. 启动和启用 Docker 服务
echo "启动 Docker 服务..."
sudo systemctl enable docker
sudo systemctl start docker

# 5. 验证安装
echo "验证 Docker 安装..."
if sudo docker --version; then
  echo "Docker 安装成功！"
  sudo docker --version
else
  echo "Docker 安装可能存在问题"
  exit 1
fi

# 6. 测试 Docker（可选）
echo "测试 Docker 运行..."
if sudo docker run --rm hello-world > /dev/null 2>&1; then
  echo "Docker 运行测试成功！"
else
  echo "警告：Docker 运行测试失败，请检查安装"
fi

echo ""
echo "============================================"
echo "Docker CE 安装完成！"
echo "重要提示：请登出并重新登录以使用户组权限生效"
echo "或者运行：newgrp docker"
echo "============================================"